// 全局类型定义文件
// 定义应用中使用的各种TypeScript类型接口

// 用户相关类型
export interface User {
  id: string // 用户唯一标识
  name: string // 用户姓名
  email: string // 用户邮箱
  avatar?: string // 用户头像（可选）
  role?: string // 用户角色（可选）
}

// 认证相关类型
export interface AuthState {
  user: User | null // 当前用户信息，null表示未登录
  token: string | null // 认证令牌，null表示无令牌
  isAuthenticated: boolean // 是否已认证
  loading: boolean // 是否正在加载（登录过程中）
}

// API响应类型
export interface ApiResponse<T = any> {
  code: number // 响应状态码
  message: string // 响应消息
  data: T // 响应数据
  success: boolean // 是否成功
}

// 分页类型
export interface Pagination {
  current: number // 当前页码
  pageSize: number // 每页大小
  total: number // 总记录数
}

// 分页响应类型
export interface PaginatedResponse<T> {
  list: T[] // 数据列表
  pagination: Pagination // 分页信息
}

// 表格列类型
export interface TableColumn {
  title: string // 列标题
  dataIndex: string // 数据字段名
  key: string // 唯一标识
  width?: number // 列宽度（可选）
  render?: (text: any, record: any, index: number) => React.ReactNode // 自定义渲染函数（可选）
}

// 菜单项类型
export interface MenuItem {
  key: string // 菜单项唯一标识
  label: string // 菜单项显示文本
  icon?: React.ReactNode // 菜单项图标（可选）
  children?: MenuItem[] // 子菜单项（可选）
  path?: string // 菜单项对应的路由路径（可选）
}

// 路由类型
export interface RouteConfig {
  path: string // 路由路径
  element: React.ComponentType // 路由对应的组件
  children?: RouteConfig[] // 子路由配置（可选）
  meta?: {
    title?: string // 路由标题（可选）
    requiresAuth?: boolean // 是否需要认证（可选）
    roles?: string[] // 允许访问的角色（可选）
  }
} 